23859
924
Έχω μια δομή:
δομή wordItem
{
λέξη συμβολοσειράς;
int count?
};
Διαβάζω σε ένα αρχείο κειμένου με πολλές διαφορετικές λέξεις και τα αποθηκεύω σε πίνακα.
ifstream inputFile ("data.txt");
εάν (inputFile.is_open ())
{
ενώ (getline (inputFile, data, "))
{
wordItemList [i] .word = δεδομένα;
i ++;
}
}
Η ερώτησή μου είναι ποιος είναι ο καλύτερος τρόπος μέτρησης κάθε φορά που εμφανίζεται μια λέξη στον πίνακα. Για παράδειγμα, εάν το αρχείο data.txt ήταν
η αλεπού πήδηξε πάνω από το φράχτη
Θέλω να μπορώ να αποθηκεύω πόσες φορές κάθε λέξη εμφανίζεται εντός της δομής εντός του "int count" 
ifstream inputFile ("data.txt");
αν (! inputFile.is_open ()) {
cerr << "Δεν μπορώ να ανοίξω data.txt \ n";
έξοδος (0);
}
χάρτης  freq;
ενώ (getline (inputFile, word, "))
++ freq [λέξη];
|
Χρησιμοποιήστε ένα std :: multiset ή std :: unordered_multiset. Η απόδοση εξαρτάται λίγο από το σύνολο δεδομένων σας, οπότε απαιτείται κάποια ρύθμιση για να βρείτε το καλύτερο στην πράξη. Κάτι σαν αυτό θα λειτουργούσε (προσαρμόστε τον κωδικό ανάγνωσης αρχείων):
# συμπερίληψη 
# συμπερίληψη 
int main () {
std :: unordered_multiset  υπαγωγή;
για (auto && s: {"word1", "word2", "word1"}) {
dict.insert (s);
}
std :: cout <